package d8_demo;

import java.io.File;

//注意: 不要乱用-->不会进入回收站
public class DeleteDirDemo02 {
    public static void main(String[] args) {
        //目标: 删除文件夹
        deleteDir(new File("D:\\javadevelop\\2024班\\02阶段java基础进阶\\陈某总结\\计算机组成原理、计算机网络、计算机操作系统、C程序数据结构"));
    }

    //独立功能独立成方法
    public static void deleteDir(File dir) {
        //1、做极端判断-->不删除的情况
        //      空文件夹(或报nullPointerException) 文件夹不存在直接不删
        if (dir == null || !dir.exists()) {
            //文件不存在直接记性返回
            return;
        }

        //2、是文件是直接进行删除
        if (dir.isFile()){
            //直接进行删除
            dir.delete();
        }

        //到这里真的是文件夹
        //3、获取所有的以及文件对象
        File[] files = dir.listFiles();
        //4、判断是否是有权限进行操作
        if (files == null){
            //没有权限操作 --> 直接打回
            return;
        }

        //5、看是否是空文件夹,是则直接进行删除
        if (files.length == 0){
            dir.delete();
        }

        //到这里真的要进行遍历了
        //6、遍历一级文件对象数组,获取所有的一级文件对象
        for (File file : files) {
            //7、判断是文件还是文件夹
            if (file.isFile()){
                //直接进行删除
                file.delete();
            }else{
                //进行递归
                deleteDir(file);
            }
        }
        //8、还要把它自己给干掉
        dir.delete();
    }


}
